// 因为 nums[-1] = nums[n] = 负无穷大
// 有三种情况：1.起始点就是峰值，接着一路下坡  2.中间有上升有下降，峰值在中间  3.末尾点就是峰值，前面一直在上升
// 所以通过比较mid和mid+1来决定峰值在哪一侧，最终收敛到任意一个峰值位置
class Solution {
    public int findPeakElement(int[] nums) {
        int left = 0, right = nums.length - 1;
        while(left < right) {
            int mid = left + (right - left) / 2;
            if(nums[mid] < nums[mid + 1]) { // 现在是上升坡，所以往右收敛，mid+1有可能是峰值
                left = mid + 1;
            } else {
                right = mid; //  现在是下降坡，所以往左收敛，mid有可能是峰值
            }
        }
        return left;
    }
}